package dejava.bolsadetrabajo.repository.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import dejava.bolsadetrabajo.repository.PublicidadRepository;
import dejava.bolsadetrabajo.repository.model.Publicidad;

public class PublicidadRepositoryJdbc implements PublicidadRepository {

	@Override
	public List<Publicidad> obtenerDetallePublicidad() throws SQLException {
		List<Publicidad> Publicidades = new ArrayList<Publicidad>();

		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;

		String sql = "";
		sql += "SELECT * FROM PUBLICIDAD WHERE FECHAPUBLICACION=CURDATE() ";
		sql += "ORDER BY DESCRIPCION;";

		try {
			Class.forName("com.mysql.jdbc.Driver").newInstance();
			conn = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/bolsatrabajo", "root", "ojbo");

			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			while (rs.next()) {
				Publicidad entity = new Publicidad();

				entity.setId(rs.getInt("Id"));
				entity.setDescripcion(rs.getString("Descripcion"));
				entity.setFechaPublicacion(rs.getDate("FechaPublicacion"));
				entity.setFechaVencimiento(rs.getDate("FechaVencimiento"));

				Publicidades.add(entity);

			}
		} catch (Exception except) {
			SQLException ex = new SQLException(
					"Error Establishing Connection: " + except.getMessage());
			throw ex;
		} finally {
			if (rs != null) {
				try {
					// Close to prevent database cursor exhaustion
					rs.close();
				} catch (SQLException ex) {
				}
			}
			if (ps != null) {
				try {
					// Close to prevent database cursor exhaustion
					ps.close();
				} catch (SQLException ex) {
				}
			}
			if (conn != null) {
				try {
					// Close to prevent database connection exhaustion
					conn.close();
				} catch (SQLException ex) {
				}
			}
		}

		return Publicidades;

	}

	@Override
	public void registrarPublicidad(Publicidad oPublicidad) throws SQLException {

		String sql = "";
		sql += "INSERT INTO bolsatrabajo.publicidad";
		sql += "(descripcion,fechaPublicacion,fechaVencimiento,Id_Usuario,tipoPublicidad,titulo)";
		sql += "VALUES";
		sql += "(?,?,?,?,?,?)";

		Connection conn = null;
		PreparedStatement ps = null;

		try {
			Class.forName("com.mysql.jdbc.Driver").newInstance();
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306",
					"root", "ojbo");

			ps = conn.prepareStatement(sql);
			ps.setString(1, oPublicidad.getDescripcion());
			ps.setDate(2, oPublicidad.getFechaPublicacion());
			ps.setDate(3, oPublicidad.getFechaVencimiento());
			ps.setInt(4, oPublicidad.getIdUsuario());
			ps.setString(5, oPublicidad.getTipoPublicidad());
			ps.setString(6, oPublicidad.getTitulo());

			ps.executeUpdate();

		} catch (Exception except) {
			SQLException ex = new SQLException(
					"Error Establishing Connection: " + except.getMessage());
			throw ex;
		} finally {

			if (ps != null) {
				try {
					// Close to prevent database cursor exhaustion
					ps.close();
				} catch (SQLException ex) {
				}
			}
			if (conn != null) {
				try {
					// Close to prevent database connection exhaustion
					conn.close();
				} catch (SQLException ex) {
				}
			}
		}
	}

}
